home *** CD-ROM | disk | FTP | other *** search
/ PC Elektro 3 / PC-Elektro-3-cd1.bin / KBan 2.0 / KBANSRC.LZH / SRC / PROG / CMD / EDPASTE.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-10-07  |  2.1 KB  |  92 lines

  1. // the implementation of class EDIT_PASTE
  2. // Copyright (C) 1996, 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
  3.  
  4. #include "../stdafx.h"
  5.  
  6. #include "../common/bool.h"
  7.  
  8. #include "edpaste.h"
  9.  
  10. void EDIT_PASTE::EDIT_PASTE_MOUSE_CURSOR::draw_cursor_core(KBAN_DRAW& draw, const XY& ac)
  11. {
  12.   KBAN_DATA cursor_data;
  13.   m_block_data.shift(ac, cursor_data);
  14.   draw.draw_kban_data_cursor(cursor_data, 0);
  15. }
  16.  
  17. STAGE* EDIT_PASTE::init_new(KBAN_INFO& info, KBAN_DRAW& draw)
  18. {
  19.   return new STAGE_PLACE(info);
  20. }
  21.  
  22. const char* EDIT_PASTE::get_name(void)
  23. {
  24.   return "Edit:Paste";
  25. }
  26.  
  27. EDIT_PASTE::STAGE_PLACE::STAGE_PLACE(KBAN_INFO& info)
  28.   : mcur(info)
  29. {
  30. }
  31.  
  32. STAGE* EDIT_PASTE::STAGE_PLACE::redraw(KBAN_INFO& info, KBAN_DRAW& draw)
  33. {
  34.   mcur.redraw_cursor(draw);
  35.   return this;
  36. }
  37.  
  38. STAGE* EDIT_PASTE::STAGE_PLACE::key_in(KBAN_INFO& info, KBAN_DRAW& draw, UINT key, UINT nFlags)
  39. {
  40.   switch(key) {
  41.     case 'r' :
  42.     case 'R' : {
  43.       mcur.erase_cursor(draw);
  44.       info.clipped_data().rotate_90();
  45.       break;
  46.     }
  47.   }
  48.   return this;
  49. }
  50.  
  51. STAGE* EDIT_PASTE::STAGE_PLACE::mouse_move(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
  52. {
  53.   XY ac;
  54.   info.grid().xy_pc2ac(pc, ac);
  55.   mcur.draw_cursor(draw, ac);
  56.   return this;
  57. }
  58.  
  59. STAGE* EDIT_PASTE::STAGE_PLACE::mouse_left_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
  60. {
  61.   mcur.erase_cursor(draw);
  62.  
  63.   XY ac;
  64.   info.grid().xy_pc2ac(pc, ac);
  65.   uint active_layer = info.active_layer().get();
  66.  
  67.   const KBAN_DATA& clipped_data = info.clipped_data();
  68.   KBAN_DATA added_data;
  69.   clipped_data.shift(ac, added_data);
  70.  
  71.   KBAN_DATA& kban_data = info.kban_data();
  72.   kban_data += added_data;
  73.  
  74.   draw.draw_kban_data(added_data, active_layer);
  75.  
  76.   info.SetModifiedFlag();
  77.   info.new_state().set(true);
  78.   info.new_state_str() = "Paste";
  79.  
  80.   return this;
  81. }
  82.  
  83. STAGE* EDIT_PASTE::STAGE_PLACE::mouse_right_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
  84. {
  85.   return NULL;
  86. }
  87.  
  88. void EDIT_PASTE::STAGE_PLACE::end(KBAN_INFO& info, KBAN_DRAW& draw)
  89. {
  90.   mcur.erase_cursor(draw);
  91. }
  92.